#include "EyeStereo.h"
using namespace irr;
using namespace core;
using namespace video;
using namespace std;
using namespace scene;

/** @brief Constructeur de la classe EyeStereo
*	
*	@param device
*		Pointeur sur irrlicht
*	@param lunettes
*		Pointeur sur l'objet de gestion des lunettes
*	@param camera
*		Pointeur sur la camera
*/
EyeStereo::EyeStereo(IrrlichtDevice *device, ICameraSceneNode* camera) : camera(camera)
{
    driver = device->getVideoDriver();

    sceneManager = device->getSceneManager();

	lunettes = VuzixGlasses::getLunettesInstance();
	// Activation des lunettes
    etat_lunettes = lunettes->init();
    
	cote = 0;
	ecart = 6.0f;
}


/** @brief Methode draw() de la classe EyeStereo
*	
*	draw rend la scene, sur le premier ecran et la fois suivante sur le deuxieme ecran
*
*
*/
int EyeStereo::draw()
{
	if (etat_lunettes == IWR_OFF) {
		sceneManager->drawAll ();
	}else{
		if (cote==0){	
			vector3df positionInitiale = camera->getAbsolutePosition();
			matrix4 m = camera->getAbsoluteTransformation();
			matrix4 right_move;
			right_move.setTranslation(vector3df (-5.0f,0,0));
			camera->setPosition((m*right_move).getTranslation());

		
			sceneManager->drawAll ();
			lunettes->setLeft();
			cote = -1;
			camera->setPosition(positionInitiale);
	
		}else {
			driver->clearZBuffer();
		
			cote = 0;
			sceneManager->drawAll ();
			lunettes->setRight();
		}
	}
	return 0;
}